/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upn.sigemfi.gar.be;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToMany;
import javax.persistence.PrimaryKeyJoinColumn;

/**
 *
 * @author Programador
 */
@Entity
@Table(name = "GAR_GARANTIA_PIGNORATICIA")
@NamedQueries({
    @NamedQuery(name = "GarantiaPignoraticia.findAll", query = "SELECT g FROM GarantiaPignoraticia g"),
    @NamedQuery(name = "GarantiaPignoraticia.findByTipopignoraticia", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.tipopignoraticia = :tipopignoraticia"),
    @NamedQuery(name = "GarantiaPignoraticia.findByBancoemisor", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.bancoemisor = :bancoemisor"),
    @NamedQuery(name = "GarantiaPignoraticia.findByLocal", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.local = :local"),
    @NamedQuery(name = "GarantiaPignoraticia.findByFechalevantamiento", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.fechalevantamiento = :fechalevantamiento"),
    @NamedQuery(name = "GarantiaPignoraticia.findByFechaperiodoinmovilizacioninicio", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.fechaperiodoinmovilizacioninicio = :fechaperiodoinmovilizacioninicio"),
    @NamedQuery(name = "GarantiaPignoraticia.findByFechaperiodoinmovilizacionfin", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.fechaperiodoinmovilizacionfin = :fechaperiodoinmovilizacionfin"),
    @NamedQuery(name = "GarantiaPignoraticia.findByNumerocuenta", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.numerocuenta = :numerocuenta"),
    @NamedQuery(name = "GarantiaPignoraticia.findByTipomoneda", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.tipomoneda = :tipomoneda"),
    @NamedQuery(name = "GarantiaPignoraticia.findByImporte", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.importe = :importe"),
    @NamedQuery(name = "GarantiaPignoraticia.findByFechavencimiento", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.fechavencimiento = :fechavencimiento"),
    @NamedQuery(name = "GarantiaPignoraticia.findByFechaconstituida", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.fechaconstituida = :fechaconstituida"),
    @NamedQuery(name = "GarantiaPignoraticia.findBySaldodisponible", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.saldodisponible = :saldodisponible"),
    @NamedQuery(name = "GarantiaPignoraticia.findByEquivalentesoles", query = "SELECT g FROM GarantiaPignoraticia g WHERE g.equivalentesoles = :equivalentesoles")
})
@PrimaryKeyJoinColumn(name = "ID_PIGNORATICIA", referencedColumnName = "ID_GARANTIA")
@DiscriminatorValue(value = "PIG")
public class GarantiaPignoraticia extends Garantia implements Serializable {

    @Basic(optional = false)
    @Column(name = "TIPOPIGNORATICIA", nullable = false, length = 50)
    private String tipopignoraticia;
    @Basic(optional = false)
    @Column(name = "BANCOEMISOR", nullable = false, length = 100)
    private String bancoemisor;
    @Column(name = "LOCAL")
    private Boolean local;
    @Basic(optional = false)
    @Column(name = "FECHALEVANTAMIENTO", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechalevantamiento;
    @Basic(optional = false)
    @Column(name = "FECHAPERIODOINMOVILIZACIONINICIO", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaperiodoinmovilizacioninicio;
    @Basic(optional = false)
    @Column(name = "FECHAPERIODOINMOVILIZACIONFIN", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaperiodoinmovilizacionfin;
    @Column(name = "NUMEROCUENTA", length = 16)
    private String numerocuenta;
    @Column(name = "TIPOMONEDA", length = 50)
    private String tipomoneda;
    @Column(name = "IMPORTE", precision = 10, scale = 2)
    private BigDecimal importe;
    @Column(name = "FECHAVENCIMIENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechavencimiento;
    @Column(name = "FECHACONSTITUIDA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaconstituida;
    @Column(name = "SALDODISPONIBLE", precision = 10, scale = 2)
    private BigDecimal saldodisponible;
    @Column(name = "EQUIVALENTESOLES", precision = 10, scale = 2)
    private BigDecimal equivalentesoles;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fidGarPignoraticia", fetch = FetchType.LAZY)
    private List<ItemPignoraticio> itemsPignoraticios;

    public GarantiaPignoraticia() {
        this.setTipogarantia("Pignoraticia");
    }

    public GarantiaPignoraticia(String tipopignoraticia, String bancoemisor, Date fechalevantamiento, Date fechaperiodoinmovilizacioninicio, Date fechaperiodoinmovilizacionfin) {
        this.tipopignoraticia = tipopignoraticia;
        this.bancoemisor = bancoemisor;
        this.fechalevantamiento = fechalevantamiento;
        this.fechaperiodoinmovilizacioninicio = fechaperiodoinmovilizacioninicio;
        this.fechaperiodoinmovilizacionfin = fechaperiodoinmovilizacionfin;
    }

    public List<ItemPignoraticio> getItemsPignoraticios() {
        return itemsPignoraticios;
    }

    public void setItemsPignoraticios(List<ItemPignoraticio> itemsPignoraticios) {
        this.itemsPignoraticios = itemsPignoraticios;
    }

    public String getTipopignoraticia() {
        return tipopignoraticia;
    }

    public void setTipopignoraticia(String tipopignoraticia) {
        this.tipopignoraticia = tipopignoraticia;
    }

    public String getBancoemisor() {
        return bancoemisor;
    }

    public void setBancoemisor(String bancoemisor) {
        this.bancoemisor = bancoemisor;
    }

    public Boolean getLocal() {
        return local;
    }

    public void setLocal(Boolean local) {
        this.local = local;
    }

    public Date getFechalevantamiento() {
        return fechalevantamiento;
    }

    public void setFechalevantamiento(Date fechalevantamiento) {
        this.fechalevantamiento = fechalevantamiento;
    }

    public Date getFechaperiodoinmovilizacioninicio() {
        return fechaperiodoinmovilizacioninicio;
    }

    public void setFechaperiodoinmovilizacioninicio(Date fechaperiodoinmovilizacioninicio) {
        this.fechaperiodoinmovilizacioninicio = fechaperiodoinmovilizacioninicio;
    }

    public Date getFechaperiodoinmovilizacionfin() {
        return fechaperiodoinmovilizacionfin;
    }

    public void setFechaperiodoinmovilizacionfin(Date fechaperiodoinmovilizacionfin) {
        this.fechaperiodoinmovilizacionfin = fechaperiodoinmovilizacionfin;
    }

    public String getNumerocuenta() {
        return numerocuenta;
    }

    public void setNumerocuenta(String numerocuenta) {
        this.numerocuenta = numerocuenta;
    }

    public String getTipomoneda() {
        return tipomoneda;
    }

    public void setTipomoneda(String tipomoneda) {
        this.tipomoneda = tipomoneda;
    }

    public BigDecimal getImporte() {
        return importe;
    }

    public void setImporte(BigDecimal importe) {
        this.importe = importe;
    }

    public Date getFechavencimiento() {
        return fechavencimiento;
    }

    public void setFechavencimiento(Date fechavencimiento) {
        this.fechavencimiento = fechavencimiento;
    }

    public Date getFechaconstituida() {
        return fechaconstituida;
    }

    public void setFechaconstituida(Date fechaconstituida) {
        this.fechaconstituida = fechaconstituida;
    }

    public BigDecimal getSaldodisponible() {
        return saldodisponible;
    }

    public void setSaldodisponible(BigDecimal saldodisponible) {
        this.saldodisponible = saldodisponible;
    }

    public BigDecimal getEquivalentesoles() {
        return equivalentesoles;
    }

    public void setEquivalentesoles(BigDecimal equivalentesoles) {
        this.equivalentesoles = equivalentesoles;
    }

   

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idGarantia != null ? idGarantia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Garantia)) {
            return false;
        }
        Garantia other = (Garantia) object;
        if ((this.idGarantia == null && other.idGarantia != null) || (this.idGarantia != null && !this.idGarantia.equals(other.idGarantia))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "edu.upn.sigemfi.gar.be.Garantia[idGarantia=" + idGarantia + "]";
    }

}
